﻿
namespace Metro.Kashikoi.Service.Common.Management
{
    /// <summary>
    /// This interface provides methods to manage the service.
    /// </summary>
    public interface IServiceManager
    {
        /// <summary>
        /// Gets the service status.
        /// </summary>
        ServiceStatus ServiceStatus { get; }

        /// <summary>
        /// Initializes this service.
        /// </summary>
        void Initialize();

        /// <summary>
        /// Starts this service.
        /// </summary>
        void Start();

        /// <summary>
        /// Stops this service.
        /// </summary>
        void Stop();

        /// <summary>
        /// Diagnoses this service.
        /// </summary>
        /// <returns></returns>
        DiagnoseResult Diagnose();
    }
}
